package com.test37_反射应用.util;

import com.test37_反射应用.util.bean.BeanUtil;

/**
 * 对象实例化工厂
 */
public class ObjectInstanceFactory {
    private ObjectInstanceFactory() {
    }

    /**
     * 实现一个简单Java类的创建处理操作模式
     * @param clazz 要进行操作的简单Java类的class对象
     * @param value 包含有属性内容的字符串“属性名称|属性内容...”
     * @param <T>   不定义具体类型，避免向下转型问题
     * @return 返回值类的对象
     */
    public static <T> T create(Class<?> clazz, String value) {
        try {
            Object object = clazz.getDeclaredConstructor().newInstance();
            BeanUtil.setObjectValue(object, value);
            return (T) object;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }
}
